package com.sh.fmbackend.once;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.util.ListUtils;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * @Auther: sh
 * @Date: 2024/12/16 20:52
 * @Description: easyExcel导入导出工具类
 */
public class ImportExcel {
//    public static void main(String[] args) {
//
////        String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
////        String fileName = "C:\\Users\\Administrator\\Desktop\\testExcel.xlsx";
//
//        // 方法一 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行
////        EasyExcel.read(fileName, UserInfo.class, new PageReadListener<UserInfo>(dataList -> {
////            for (UserInfo one : dataList) {
////                System.out.println(one);
////            }
////        })).sheet().doRead();
//
//
//
//        // 写法2：
//        // 匿名内部类 不用额外写一个DemoDataListener
//        // 这里 需要指定读用哪个class去读，然后读取第一个sheet 文件流会自动关闭
////        EasyExcel.read(fileName, UserInfo.class, new ReadListener<UserInfo>() {
////            /**
////             * 单次缓存的数据量
////             */
////            public static final int BATCH_COUNT = 1000;
////            /**
////             *临时存储
////             */
////            private List<UserInfo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
////
////            @Override
////            public void invoke(UserInfo data, AnalysisContext context) {
////                cachedDataList.add(data);
////                System.out.println("执行读取一次");
////                if (cachedDataList.size() >= BATCH_COUNT) {
////                    System.out.println("执行存入一次");
////                    saveData();
////                    // 存储完成清理 list
////                    cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
////                }
////            }
////
////            @Override
////            public void doAfterAllAnalysed(AnalysisContext context) {
////                saveData();
////            }
////
////            /**
////             * 加上存储数据库
////             */
////            private void saveData() {
////                System.out.println("存储到数据库！" +"  有"+ cachedDataList.size()+"条数据" );
////            }
////        }).sheet().doRead();
//
//        // 写法3：
////        EasyExcel.read(fileName, UserInfo.class, new TableListener()).sheet().doRead();
////
////        // 写法4
////        fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
////        // 一个文件一个reader
////        try (ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).build()) {
////            // 构建一个sheet 这里可以指定名字或者no
////            ReadSheet readSheet = EasyExcel.readSheet(0).build();
////            // 读取一个sheet
////            excelReader.read(readSheet);
////        }
//
//    }


}

